package com.design.FactoryMode.demo;

import lombok.extern.slf4j.Slf4j;

/**
 * 常规写法  IF太多
 */
@Slf4j
//@RestController
public class SmsWeb {

    /**
     * 发送短信
     * @param phone 手机号
     * @param type 类型 1：用户注册  2：找回密码  3：修改支付密码   4：提现
     * @return String
     */
    //@GetMapping("sendSms")
    public String sendSms(String phone, Integer type){
        SmsService smsService = null ;
        if(type == 1){
            smsService = new RegisterServiceImpl();
        }else if(type == 2){
            smsService = new ForgetPwdServiceImpl();
        }else if(type == 3){
            smsService = new PayPwdServiceImpl();
        }else if(type == 4){
            smsService = new WithdrawServiceImpl();
        }else{
            throw  new RuntimeException("没有找到指定的短信验证码类型");
        }
        //check方法的返回值用boolean接受是不合理的，因为你要告诉用户为什么发送验证码失败，
        // 我这里只是案例展示，所以自己实践的时候最好把提示消息带上
        boolean flag = smsService.check(phone);
        if(!flag){
            log.info("不符合要求，发送失败");
            return "短信验证码发送失败";
        }
        //校验通过，下面就是发送验证码了，你可以通过异步的方式发送，比如：Mq（推荐这种），也可以同步
        log.info("发送短信验证码");
        return "发送短信验证码成功";
    }

}
